#!/bin/sh
# 
# 部署工具
# 
# @author liuzy
# @since 2016-07-02

F_debug "F_F" "加载svn.sh"

### 检查是否已安装SVN
F_isInstall "svn"
if [[ ${F_result} = false ]] ; then
	F_info "您没有安装SVN，或未配置环境变量。"
else
	F_info "SVN已安装。"
fi

### 安装SVN
## 参数
# 无
## 返回
# 无
function F_installSvn() {
	F_debug "F_installSvn" "安装SVN"
	F_isInstall "svn"
	if [[ ${F_result} = true ]] ; then
		F_info "您已经安装了SVN，我不干了。"
		svn --version
		exit 0
	fi
	if [[ ! `whereis yum` = "yum:" ]] ; then
		yum -y install subversion
	elif [[ ! `whereis apt-get` = "apt-get:" ]] ; then
		apt-get -y install subversion
	else
		F_info "您没有yum，又没有apt-get，看来只有去下载了。"
	fi
}

### SVN检出，如果目录存在就更新
## 参数
# $1 SVN全路径或项目名
## 返回
# 无
function F_svnCheckOut() {
	F_debug "F_svnCheckOut" "SVN检出，如果目录存在就更新"
	# 输入的SVN全路径或项目名
	path=$1
	# 不能为空
	F_assert "F_svnCheckOut" "SVN全路径或项目名" ${path}
	# 要检出的目录存在，那么更新
	if [ -d "${path##*/}" ] && [ -d "${path##*/}/.svn" ] ; then
		F_info "开始更新${path}。"
		svn up ${path}
		exit 0
	fi
	# 如果存在SVN_PATH，认为输入的是项目名
	if [[ ${SVN_PATH} ]] ; then
		path=${SVN_PATH}/${path}
	fi
	svnPath="co ${path}"
	if [[ ${SVN_PASSWORD} ]] ; then
		svnPath="--password=${SVN_PASSWORD} ${svnPath}"
	fi
	if [[ ${SVN_USERNAME} ]] ; then
		svnPath="--username=${SVN_USERNAME} ${svnPath}"
	fi
	# 检出
	F_info "开始检出${path}。"
	svn ${svnPath}
	if [[ ! -d ${path##*/} ]] ; then
		F_error "${path##*/}检出失败。"
		exit 1
	fi
}

### SVN更新
## 参数
# $1 目标目录
## 返回
# 无
function F_svnUpdate() {
	F_debug "F_svnUpdate" "SVN检出，SVN更新"
	# 不能为空
	F_assert "F_svnUpdate" "目标目录" $1
	# 更新
	svn up $1
}

